5
תגובות

תחלופה לפקודה sleep in php

פתח אנונימי ,
אני מנסה לבנות מערכת שמדמה משחק, לדוגמא כדורגל : אני צריך שכל 10 שניות בערך יהיה לי משפט אז בניתי דף שרץ 90 דקות !, ועשיתי שימציא לי משפט כלשהו , עכשיו אני צריך שכל 10 שניות יציג לי משפט אז עשיתי את הפקודה sleep לפני שזה יריץ לי את המשפט הבא. ידוע שהדף מסיים את כל תתהליך יצירת משפט תוך שניה, לכן אני צריך לחכות. כאשר אני מפעיל את הדף דרך cornjobs הוא נעצר אחרי כמה דקות , ושאני מפעיל אותו דרך המחשב שלי בכתובת האינטרנט זה עובד .. אני כמעט בטוח שהפקודה sleep כאשר השרת מפעיל את הדף תוקעת אותו באמצע ומפסיקה אותו אשמח לתחלופה או עצה ..

תודה מראש!

5 תשובות

avatar ענה אנונימי ב 27 לנובמבר 2011 #

sleep לא אשמה בשום דבר.
הדרך הכי טובה תלויה בהאם המשפט הזה הוא אותו משפט שרואים כל השחקנים או משפט פר משתמש.

במקרה הראשון תשים את הסקריפט על קרון כל דקה ושייצר 6 משפטים בלולאה, שבסופה סליפ ל9 שניות.
אם זה פר שחקן - עדיף שזה יהיה ב ajax כל 10 שניות תהיה בקשה לשרת שתייבא משפט חדש על ידי הפעלה חדשה של הסקריפט.

למרות שאתה יכול גם להשאיר סקריפט אחד ברקע שרץ כל היום, תמיד, כל 10 שניות מייצר משפט ורושם אותו לאנשהו, סקריפטים אחרים יקראו את המשפט הזה בכל בקשה ajax ויחזירו אותו.

ככה או ככה זה לא סליפ שעושה בעיות כלשהם. תנסה לעשות לולאה פרימיטיבית ותראה שבה הכל עובד, אלה אם כן יש timeout מוגדר לזמן הסקריפט.

avatar ענה raslin ב 27 לנובמבר 2011 #

sleep היא פונקציה בצד השרת, אם עשית 10 פעם SLEEP של 10 שניות, כל הדף יטען 100 שניות לפני שהוא יציג תוכן כלשהו,
אם אתה רוצה שכל 10 שניות תופיע שורה למשתמש, אתה צריך להתעסק בצד הלקוח ולא בצד השרת,
שזה javascript.
בהצלחה

avatar ענה אנונימי ב 27 לנובמבר 2011 #

לדוגמא אני קובע שיש משחק כדורגל בשעה 10 , ובשעה הזו יש ל10000 קבוצות משחקים שעם נחלק משתיים זה יצא מספר הקבוצות , איך אני יעשה בajax שזה יביא לי כל פעם משפט ?? ולמה זה נתקע באמצע ועוצר ..
את הדף שיוצר משפטים אני יודע שהשרת צריך להפעיל אותו לא אני .. אז איך אני יעשה דף שהשרת יפעיל ויקרא לעצמו כל 10 שניות במשך זמן מסוים ??

avatar ענה אנונימי ב 27 לנובמבר 2011 #

אתה יכול גם להשאיר סקריפט אחד ברקע שרץ כל היום, תמיד, כל 10 שניות מייצר משפט ורושם אותו לאנשהו, סקריפטים אחרים יקראו את המשפט הזה בכל בקשה ajax ויחזירו אותו.

avatar ענה אנונימי ב 29 לנובמבר 2011 #

עם ajax..
כשיש משחק, כל 10 שניות תקרא לעמוד של המשפטים שיוציא לך משפט רנדומלי כל פעם.
זה לדוגמה העמוד של המשפטים:

$s = array(
    's1','s2','s3'.......
);
echo $s[rand(0,cound($s))];

לעמוד הזה תקרא כל 10 שניות, עם ajax ותדפיס את הפלט שלו.
הפלט יהיה לפעמים s1, לפעמים s2 או s3...